package com.jctrip.hotel.source.model.CnBooking.resp;

import java.util.List;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;

import lombok.Data;

/**
 * @Author henry
 * @Date 2023/7/2 16:07
 * @Description
 */
@Data
public class QueryHotelResp extends BaseResponse {
    @JacksonXmlElementWrapper
    @JacksonXmlProperty(localName = "Data")
    private HotelsData data;

    @Data
    public static class HotelsData {
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Hotels")
        private Hotels hotels;
    }

    @Data
    public static class Hotels {
        @JacksonXmlProperty(localName = "HotelCount")
        private Integer hotelCount;
        @JacksonXmlProperty(localName = "Hotel")
        @JacksonXmlElementWrapper(useWrapping = false)
        private List<Hotel> hotelList;
    }

    @Data
    public static class Hotel {
        @JacksonXmlProperty(localName = "HotelId")
        private String hotelId;
        @JacksonXmlProperty(localName = "HotelName")
        private String HotelName;
        @JacksonXmlProperty(localName = "CountryId")
        private String CountryId;
        @JacksonXmlProperty(localName = "CountryName")
        private String CountryName;
        @JacksonXmlProperty(localName = "ProvinceId")
        private String ProvinceId;
        @JacksonXmlProperty(localName = "ProvinceName")
        private String ProvinceName;
        @JacksonXmlProperty(localName = "CityId")
        private String CityId;
        @JacksonXmlProperty(localName = "CityName")
        private String CityName;
        @JacksonXmlProperty(localName = "Address")
        private String Address;
        @JacksonXmlProperty(localName = "PostCode")
        private String PostCode;
        @JacksonXmlProperty(localName = "StartBusinessDate")
        private String StartBusinessDate;
        @JacksonXmlProperty(localName = "Repairdate")
        private String Repairdate;
        @JacksonXmlProperty(localName = "RecommendedLevel")
        private String RecommendedLevel;
        @JacksonXmlProperty(localName = "Email")
        private String Email;
        @JacksonXmlProperty(localName = "Star")
        private String Star;
        @JacksonXmlProperty(localName = "Lon")
        private String Lon;
        @JacksonXmlProperty(localName = "Lat")
        private String Lat;
        @JacksonXmlProperty(localName = "Score")
        private String Score;
        @JacksonXmlProperty(localName = "Intro")
        private String Intro;
        @JacksonXmlProperty(localName = "AllowWebSale")
        private String AllowWebSale;
        @JacksonXmlProperty(localName = "Guide")
        private String Guide;
        @JacksonXmlProperty(localName = "Landmarks")
        @JacksonXmlElementWrapper(useWrapping = false)
        private Landmarks Landmarks;
        @JacksonXmlProperty(localName = "Reserve1")
        @JacksonXmlElementWrapper(useWrapping = false)
        private Reserve1 Reserve1;
        @JacksonXmlProperty(localName = "Reserve2")
        private String Reserve2;
        @JacksonXmlProperty(localName = "Reserve3")
        @JacksonXmlElementWrapper(useWrapping = false)
        private Reserve3 Reserve3;
    }

    @Data
    public static class Landmarks {
        @JacksonXmlProperty(localName = "LandmarkCount")
        private String LandmarkCount;
        @JacksonXmlProperty(localName = "Landmark")
        @JacksonXmlElementWrapper(useWrapping = false)
        private List<Landmark> Landmark;
    }

    @Data
    public static class Landmark {
        @JacksonXmlProperty(localName = "Landid")
        private String Landid;
        @JacksonXmlProperty(localName = "LandName")
        private String LandName;
        @JacksonXmlProperty(localName = "Distance")
        private String Distance;

    }

    @Data
    public static class Reserve1 {
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Images")
        private Images Images;

    }

    @Data
    public static class Reserve3 {
        @JacksonXmlProperty(localName = "AffiliatedGroupId")
        private String AffiliatedGroupId;
        @JacksonXmlElementWrapper(localName = "Services")
        @JacksonXmlProperty(localName = "Service")
        private List<Service> serviceList;

    }

    @Data
    private static class Service {
        @JacksonXmlProperty(localName = "ServiceId")
        private String ServiceId;
        @JacksonXmlProperty(localName = "ServiceName")
        private String ServiceName;
        @JacksonXmlProperty(localName = "GroupId")
        private String GroupId;
    }

    @Data
    public static class Images {
        @JacksonXmlProperty(localName = "ImageCount")
        private String ImageCount;
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Image")
        private List<Image> Image;

    }

    @Data
    public static class Image {
        @JacksonXmlProperty(localName = "ImageId")
        private String ImageId;
        @JacksonXmlProperty(localName = "ImageName")
        private String ImageName;
        @JacksonXmlProperty(localName = "ImageUrl")
        private String ImageUrl;

    }
}
